package tools

import "net"

//Res 定义返回值格式
type Res struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`
}

//ReturnOK 正常返回值
func ReturnOK(code int, msg string, data interface{}) *Res {
	return &Res{Code: code, Msg: msg, Data: data}
}

//ReturnErr 报错返回值
func ReturnErr(code int, msg string) *Res {
	return &Res{Code: code, Msg: msg, Data: nil}
}

//GetLocalIP 服务端ip
func GetLocalIP() (ip string, err error) {
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return
	}
	for _, addr := range addrs {
		ipAddr, ok := addr.(*net.IPNet)
		if !ok {
			continue
		}
		if ipAddr.IP.IsLoopback() {
			continue
		}
		if !ipAddr.IP.IsGlobalUnicast() {
			continue
		}
		return ipAddr.IP.String(), nil
	}
	return
}
